Micron Document
Fox's Git Mirrors

Node / rns-mirrors / Reticulum-Go.git / files / docs / en / examples.md

Displaying Rendered • View rawDownload

docs/en/examples.md 633735d797cc5f5d48cb2e22e8fd7cd743930daf (633735d7) Text, 11.48 KB

Examples

Sample programs under T383838examples/ show how to use Reticulum-Go as a library.
They are starting points rather than production services.

Pair this page with the API reference.

Which Example to Open

┌─────────────────────────────────┬────────────────────────────────────────────────────────────────┐
│ Goal │ Start Here │
├─────────────────────────────────┼────────────────────────────────────────────────────────────────┤
│ Smallest stack bring-up │ T383838examples/minimal
│ Announce callbacks │ T383838examples/announce
│ Encrypted link packets │ T383838examples/link
│ Minimal resource send │ T383838examples/resources
│ File list and download │ T383838examples/filetransfer
│ Prove-all echo │ T383838examples/echo
│ Page request client │ T383838examples/page-downloader
│ Pages and files over Reticulum │ T383838reticulum-go pageserver or T383838examples/pageserver
│ Browser WebSocket client │ T383838examples/wasm
│ Python talking to the daemon │ T383838examples/control-client
│ C / FFI smoke test │ T383838bindings/c/examples/smoke
│ C librns page fetch │ T383838bindings/c/examples/page-fetch
│ C librns pageserver │ T383838bindings/c/examples/pageserver
│ Odin librns smoke │ T383838bindings/odin/examples/smoke
│ Odin librns page fetch │ T383838bindings/odin/examples/page-fetch
│ Odin librns pageserver │ T383838bindings/odin/examples/pageserver
│ Zig librns smoke │ T383838bindings/zig/examples/smoke
│ Zig librns page fetch │ T383838bindings/zig/examples/page-fetch
│ Zig librns pageserver │ T383838bindings/zig/examples/pageserver
│ C++ librns smoke │ T383838bindings/cpp/examples/smoke
│ C++ librns page fetch │ T383838bindings/cpp/examples/page-fetch
│ C++ librns pageserver │ T383838bindings/cpp/examples/pageserver
│ Rust librns smoke │ T383838bindings/rust/examples/smoke
│ Rust librns page fetch │ T383838bindings/rust/examples/page-fetch
│ Rust librns pageserver │ T383838bindings/rust/examples/pageserver
│ Python librns smoke │ T383838bindings/python/examples/smoke
│ Python librns page fetch │ T383838bindings/python/examples/page-fetch
│ Python librns pageserver │ T383838bindings/python/examples/pageserver
│ Lua librns smoke │ T383838bindings/lua/examples/smoke
│ Lua librns page fetch │ T383838bindings/lua/examples/page-fetch
│ Lua librns pageserver │ T383838bindings/lua/examples/pageserver
│ Swift librns smoke │ T383838bindings/swift/examples/smoke
│ Swift librns page fetch │ T383838bindings/swift/examples/page-fetch
│ Swift librns pageserver │ T383838bindings/swift/examples/pageserver
│ Java librns smoke │ T383838bindings/java/examples/smoke
│ Java librns page fetch │ T383838bindings/java/examples/page-fetch
│ Java librns pageserver │ T383838bindings/java/examples/pageserver
│ Kotlin librns smoke │ T383838bindings/kotlin/examples/smoke
│ Kotlin librns page fetch │ T383838bindings/kotlin/examples/page-fetch
│ Kotlin librns pageserver │ T383838bindings/kotlin/examples/pageserver
│ Dart librns FFI smoke │ T383838bindings/dart/examples/smoke
│ Odin librns bindings │ T383838bindings/odin
│ Zig librns bindings │ T383838bindings/zig
│ C++ librns bindings │ T383838bindings/cpp
│ Rust librns bindings │ T383838bindings/rust
│ Python librns bindings │ T383838bindings/python
│ Lua librns bindings │ T383838bindings/lua
│ Swift librns bindings │ T383838bindings/swift
│ Java librns bindings │ T383838bindings/java
│ Kotlin librns bindings │ T383838bindings/kotlin
│ Dart librns FFI and Control API │ T383838bindings/dart

Control API Client

Path: T383838examples/control-client/

Python T383838client.py for the localhost Control API.

T282828
enable_control_api = yes
rpc_key = <64 hex characters>


librns smoke

Path: T383838bindings/c/examples/smoke/

Minimal C program against T383838librns.so and T383838include/rns.h.

T282828
task build-librns
make -C bindings/c/examples/smoke
./bindings/c/examples/smoke/librns-smoke

See librns.

librns page fetch (C)

Path: T383838bindings/c/examples/page-fetch/

NomadNet / pageserver style page request over the C ABI. Opens a path, waits for an announce, establishes a link, and prints the T383838/page/... response.

T282828
task build-librns
make -C bindings/c/examples/page-fetch
./bindings/c/examples/page-fetch/librns-page-fetch \\
-c /path/to/config \\
92798ea245a0afcfa559348e42d628c6:/page/index.mu

Add a TCP or Backbone hub from directory.rns.recipes to the config.

Odin page fetch

Path: T383838bindings/odin/examples/page-fetch/

Same flow as the C page-fetch example, using the Odin wrappers in T383838bindings/odin.

T282828
task build-librns
make -C bindings/odin/examples/page-fetch
./bindings/odin/examples/page-fetch/odin-page-fetch \\
-c /path/to/config \\
92798ea245a0afcfa559348e42d628c6:/page/index.mu

librns pageserver (C)

Path: T383838bindings/c/examples/pageserver/

NomadNet-compatible T383838nomadnetwork.node destination that serves T383838/page/index.mu over librns request handlers.

T282828
task build-librns
make -C bindings/c/examples/pageserver
./bindings/c/examples/pageserver/librns-pageserver \\
-c /path/to/config

Prints T383838DEST_HASH=... on startup. Fetch with the C, Odin, Zig, or C++ page-fetch example.

Run helpers (Go is the default demo pageserver):

T282828
task example:pageserver
make -C examples/pageserver run

task example:pageserver:c
task example:pageserver:odin
task example:pageserver:zig
task example:pageserver:cpp

Odin pageserver

Path: T383838bindings/odin/examples/pageserver/

Same pageserver flow using the Odin bindings.

T282828
task build-librns
make -C bindings/odin/examples/pageserver
./bindings/odin/examples/pageserver/odin-pageserver \\
-c /path/to/config

Zig page fetch

Path: T383838bindings/zig/examples/page-fetch/

Same flow as the C page-fetch example, using the Zig wrappers in T383838bindings/zig.

T282828
task build-librns
make -C bindings/zig/examples/page-fetch
./bindings/zig/examples/page-fetch/zig-page-fetch \\
-c /path/to/config \\
92798ea245a0afcfa559348e42d628c6:/page/index.mu

Zig pageserver

Path: T383838bindings/zig/examples/pageserver/

Same pageserver flow using the Zig bindings.

T282828
task build-librns
make -C bindings/zig/examples/pageserver
./bindings/zig/examples/pageserver/zig-pageserver \\
-c /path/to/config

C++ smoke

Path: T383838bindings/cpp/examples/smoke/

Minimal C++17 lifecycle check against T383838librns.so via T383838bindings/cpp.

T282828
task build-librns
make -C bindings/cpp/examples/smoke
./bindings/cpp/examples/smoke/cpp-smoke

C++ page fetch

Path: T383838bindings/cpp/examples/page-fetch/

Same flow as the C page-fetch example, using the C++ wrappers in T383838bindings/cpp.

T282828
task build-librns
make -C bindings/cpp/examples/page-fetch
./bindings/cpp/examples/page-fetch/cpp-page-fetch \\
-c /path/to/config \\
92798ea245a0afcfa559348e42d628c6:/page/index.mu

C++ pageserver

Path: T383838bindings/cpp/examples/pageserver/

Same pageserver flow using the C++ bindings.

T282828
task build-librns
make -C bindings/cpp/examples/pageserver
./bindings/cpp/examples/pageserver/cpp-pageserver \\
-c /path/to/config

Rust / Python / Lua / Swift / Java / Kotlin / Dart examples

Each language binding keeps demos under T383838bindings/<lang>/examples/.

T282828
task build-librns
make -C bindings/rust examples
make -C bindings/python examples
make -C bindings/lua examples
make -C bindings/swift examples
make -C bindings/java examples
make -C bindings/kotlin examples
make -C bindings/dart examples

Smoke programs print T383838*-smoke ok. Page-fetch and pageserver match the C demos for Rust, Python, Lua, Swift, Java, and Kotlin. Dart ships FFI smoke under T383838bindings/dart/examples/smoke (Control API sample remains under T383838bindings/dart/example/).

Odin librns bindings

Path: T383838bindings/odin/

Idiomatic Odin package over T383838librns.so. Requires Odin on T383838PATH and a built shared library.

T282828
task build-librns
task test-odin

Import with a collection rooted at T383838bindings/odin:

T282828
import rns "rns:rns"

Wrapped surface includes node lifecycle, identity, destination, path table, link send and request, and event poll. See librns.

Zig librns bindings

Path: T383838bindings/zig/

Idiomatic Zig package over T383838librns.so. Requires Zig 0.16.0 or later on T383838PATH and a built shared library.

T282828
task build-librns
task test-zig

Import as T383838@import("rns") from a T383838build.zig dependency on T383838bindings/zig. See librns.

C++ librns bindings

Path: T383838bindings/cpp/

Idiomatic C++17 RAII package over T383838librns.so. Requires CMake and a C++17 compiler, plus a built shared library.

T282828
task build-librns
task test-cpp

T282828
#include <rns/rns.hpp>

auto node_r = rns::Node::create("");
auto node = std::move(node_r).value();
node.start();

Wrapped surface matches the Odin and Zig bindings. See librns.

Dart bindings

Path: T383838bindings/dart/

Package rns_control includes librns FFI (T383838ffi.dart) and a Control API client.

T282828
task build-librns
task test-dart
task build-librns-targets -- linux android windows

T282828
dependencies:
rns_control:
path: /path/to/Reticulum-Go/bindings/dart


Module Layout

Most examples keep their own T383838go.mod with a replace pointing at the repository root. T383838examples/wasm and T383838examples/pageserver also vendor dependencies.

Related Documents
Served by rngit 1.5.2 - Generated in 0.02s